{% extends "layout.html" %}
{% set title = 'GetFEM Homepage' %}
{% set dlbase = 'dist' %}
{% block body %}

<META NAME="Keywords" CONTENT=" finite element library, finite element package, finite element software, finite elements">

<div style="text-align:center;"><img src="{{ pathto('_static/logogetfem.png', 1) }}" alt="the GetFEM logo"><br/> An open-source finite element library </div>
<br/><br/>

<p><strong>NEW</strong> (April 2020): Version 5.4 has been released.<br/></p>

<p>Thank you for citing <a class="biglink" href="https://hal.archives-ouvertes.fr/hal-02532422/document"> [GetFEM2020]</a> in scientific works that use GetFEM.<br/></p>


  <p><strong>Parts of the documentation:</strong></p>
  <table class="contentstable" align="center"><tr>
    <td width="50%">
      <p class="biglink">
         <a class="biglink" href="index.html#what-is-getfem">What is GetFEM?</a><br/>
         <span class="linkdescr">what is GetFEM?</span></p>
      <p class="biglink">
         <a class="biglink" href="{{ pathto("tutorial/index") }}">Tutorial</a><br/>
         <span class="linkdescr">Begin with GetFEM</span></p>
      <p class="biglink">
         <a class="biglink" href="{{ pathto("screenshots/shots") }}">Screenshots</a><br/>
         <span class="linkdescr">GetFEM in action</span></p>
      <p class="biglink">
         <a class="biglink" href="{{ pathto("whatsnew/" + version) }}">What's new in GetFEM {{ version }}?</a><br/>
         <span class="linkdescr">or <a href="{{ pathto("whatsnew/index") }}">all "What's new" documents</a> since 1.0</span></span></p>
      <p class="biglink">
         <a class="biglink" href="{{ pathto("userdoc/index") }}">Using the Library</a><br/>
         <span class="linkdescr">User Documentation</span></p>
      <p class="biglink">
         <a class="biglink" href="http://download-mirror.savannah.gnu.org/releases/getfem/doc/getfem_reference/">Library Reference</a><br/>
         <span class="linkdescr">keep this under your pillow</span></p>
      <p class="biglink">
         <a class="biglink" href="{{ pathto("project/index") }}">Contributor's guide</a><br/>
         <span class="linkdescr">Description of the project and how to contribute</span></p>
    </td><td width="50%">
      <p class="biglink">
         <a class="biglink" href="{{ pathto("python/index") }}">Python Interface</a><br/>
         <span class="linkdescr">documentation for Python programmers</span></p>
      <p class="biglink">
	<a class="biglink" href="{{ pathto("matlab_octave/index") }}">Octave/Matlab Interface</a><br/>
         <span class="linkdescr">documentation for Octave/Matlab programmers</span></p>
      <p class="biglink">
         <a class="biglink" href="{{ pathto("scilab/index") }}">SciLab Interface</a><br/>
         <span class="linkdescr">documentation for SciLab programmers</span></p>
      <p class="biglink">
         <a class="biglink" href="{{ pathto("documenting/index") }}">Documenting</a><br/>
         <span class="linkdescr">guide for documentation authors</span></p>
      <p class="biglink">
         <a class="biglink" href="{{ pathto("gmm") }}">Gmm++ template matrix library</a><br/>
         <span class="linkdescr">What is Gmm++?</span></p>
      <p class="biglink">
         <a class="biglink" href="{{ pathto("download") }}">Download/Install</a><br/>
         <span class="linkdescr">Download and install {{ project }} </span></p>
    </td></tr>
  </table>

  <p><strong>Indices and tables:</strong></p>
  <table class="contentstable" align="center"><tr>
    <td width="50%">
      <p class="biglink"><a class="biglink" href="{{ pathto("genindex") }}">General Index</a><br/>
         <span class="linkdescr">all functions, classes, terms</span></p>
      <p class="biglink"><a class="biglink" href="{{ pathto("glossary") }}">Glossary</a><br/>
         <span class="linkdescr">the most important terms explained</span></p>
    </td><td width="50%">
      <p class="biglink"><a class="biglink" href="{{ pathto("search") }}">Search page</a><br/>
         <span class="linkdescr">search this documentation</span></p>
      <p class="biglink"><a class="biglink" href="{{ pathto("contents") }}">Complete Table of Contents</a><br/>
         <span class="linkdescr">lists all sections and subsections</span></p>
    </td></tr>
  </table>

  <p><strong>Meta information:</strong></p>
  <table class="contentstable" align="center"><tr>
    <td width="50%">
      <p class="biglink"><a class="biglink" href="{{ pathto("bugs") }}">Reporting bugs</a></p>
      <p class="biglink"><a class="biglink" href="{{ pathto("about") }}">About the documentation</a></p>
     <p class="biglink"><a class="biglink" href="{{ pathto("lists") }}">Mailing lists</a></p>
    </td><td width="50%">
      <p class="biglink"><a class="biglink" href="{{ pathto("license") }}">History and License of GetFEM</a></p>
      <p class="biglink"><a class="biglink" href="{{ pathto("copyright") }}">Legal information</a></p>
    </td></tr>
  </table>

<div class="section" id="what-is-getfem">
<p><h1>What is GetFEM<a class="headerlink" href="#what-is-getfem" title="Permalink to this headline">¶</a></h1></p>

    <p>
    GetFEM is an open source library based on collaborative development. It aims to offer the most flexible framework for solving potentially coupled systems of linear and nonlinear partial differential equations with the finite element method (see the basic principle in <a class="biglink" href="https://hal.archives-ouvertes.fr/hal-02532422/document"> [GetFEM2020]</a>). GetFEM is interfaced with some script languages (Python, Octave, Scilab and Matlab) so that almost all of the functionalities can be used just writing scripts. It works in arbitrary dimension and allow to couple 1D, 2D and 3D problems. The strong points of GetFEM can be summarized as follows:
    </p>

    <ul>
      <li> A weak form language (in terms of operators) that allows to translate quite arbitrary weak formulations.  A symbolic derivation that allows to automatically obtain the tangent system for nonlinear problems. A compilation of assembly terms into optimized basic instructions. </li>
      <li> A model description that gather the variables, data and terms of a problem and some predefined bricks representing classical models : elasticity in small and large deformations, Helmholtz problem, scalar elliptic problem, Dirichlet, contact and Neumann boundary conditions, incompressibility constraint, ... </li>
      <li> A complete separation between geometric transformation, finite element method, integration methods and partial differential term description, which allows to easily switch from a method to another. </li>
      <li> A large set of predefined methods : isoparametric/subparametric/overparametric elements, Pk on simplices of arbitrary degree and dimension, Qk on parallelepipeds, pyramidal elements, P1, P2 with bubble functions, Hermite elements, Argyris element, HCT and FVS, elements with hierarchical basis (for multigrid methods for instance), discontinuous Pk and Qk, vector elements (RT0, Nedelec) ...  </li>
      <li> A large set of predefined integration methods.  </li>
      <li> Structural mechanics terms (elasticity, contact with friction, plasticity ...) </li>
      <li> Level-set and finite element cut by one or several level-set (Xfem) </li>
      <li> Computation of terms between two meshes with an arbitrary transformation: this is a very powerful tool of the generic assembly that allows to use a parameterized transformation. The derivative of the transformation with respect to the potential dependance in the variables is taken into account. Possible use : contact problems, fluid-structure interaction, special boundary conditions ... </li>
      <li> Post-processing directly with Scilab, Octave or Matlab interfaces or with the export of vtk or gmsh files. Many possibility to interpolate arbitrary quantities, make slices, projections ... </li>
    </ul>

    <p>  
    GetFEM can be used to construct very generic finite element codes,
    where finite element methods, integration methods and the dimension
    of the problem are the parameters that can be 
    changed very easily. This allows a wide range of experiments.
    Many examples and demos are provided.
    </p>
    
    <p>
    GetFEM has only an experimental meshing procedure (and produces regular meshes). It is therefore often necessary to import meshes. The formats 
    currently supported are GID, GMSH, EMC2 and ANSYS.
    </p>
</div>

<div class="section" id="gmm">
<p><h1>Gmm++<a class="headerlink" href="#gmm" title="Permalink to this headline">¶</a></h1></p>
    <p>
      GetFEM includes a <a href="gmm/index.html" title="Generic Matrix Methods">generic matrix template</a> library inspired by <a
      href="http://www.osl.iu.edu/research/mtl/" title="Matrix Template Library">MTL</a> and <a
      href="http://www.osl.iu.edu/research/itl/" title="Iterative Template Library">ITL</a>.  
    </p>
</div>
 
<div class="section" id="awards">
<p><h1>Awards<a class="headerlink" href="#awards" title="Permalink to this headline">¶</a></h1></p>
    <p>
      GetFEM has been awarded by the second price at the
      <a href="http://fr.wikipedia.org/wiki/Les_Troph%C3%A9es_du_libre"> "Trophees du Libre 2007"</a> in the category of scientific softwares.
    </p>
</div>

{% endblock %}
